package com.pashanhoo.datastructure.leetcode;

import java.util.Arrays;

/**
 * @author 胡庆安
 * @version V1.0
 * @Package com.pashanhoo.datastructure.leetcode
 * @date 2020/10/20 9:33
 * @Copyright © 2010-2020 爬山虎科技（扬州）股份有限公司
 */
//给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
//
//不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
//
//元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

public class Test27 {
    public static void main(String[] args) {
        int[] nums = {0,1,2,2,3,0,4,2};
        System.out.println(removeElement(nums, 2));
    }

    public static int removeElement(int[] nums, int val) {
            int count = 0;
            for (int i=0;i<nums.length-count;){
                if (nums[i] == val){
                    count++;
                    for (int j=i;j<nums.length-1;j++){
                        nums[j] = nums[j+1];
                    }
                }else {
                    i++;
                }
            }
            nums = Arrays.copyOf(nums, nums.length-count);

            return nums.length;
        }

}
